今天要實際撰寫TensorFlow的programs(Qwiklabs – Writing low-level TensorFlow programs),從AI Platform開啟Notebooks以及下載資料這邊我就不在贅述了,直接切換至training-data-analyst > courses > machine_learning > deepdive > 03_tensorflow > labs 內部的a_tfstart.ipynb,開始今天的實驗吧
首先第一步當然就是要引入tensorflow與numpy來開始今天的實驗,並且可以同時查看tensorflow版本
接著可以試試看numpy做加總輸出結果會是甚麼
開始建立tensorflow的圖表,可以看到不一樣的地方是回傳並不是直接出現數值而是出現之後要進行的方法,特別注意一點若是做加總要記得資料型態要一樣,不能使用int加上float這樣會報錯;接著利用Session來呼叫圖形就能得到數值。
若是希望在開始跑圖形時再輸入數值的話,可以先用placeholder來先保留一個空位利用feed_dict來做輸入。
有個簡單的小例子關於海龍公式, ,要去計算出結果,也是非常簡單,把數值拿進來做運算就好了。
那如果一次有很多陣列要做運算怎麼辦呢?其實很簡單就只要把之前學到的觀念sliced拿來用就好了,取出各維度的所有資訊一次做加總運算就好了。
那利用placeholder要怎麼實現呢?首先設定placeholder,接著告訴placeholder的值要丟給哪個函數,最後在利用sess.run來指定其數值,就完成了
若是想要迫切的知道tensor輸出的資訊則可使用eager的方式,from tensorflow.contrib.eager.python import tfe、tfe.enable_eager_execution()加入這兩行就能直接輸出數值
以下是debugging的流程,首先要先讀懂錯誤的訊息,接著找到問題發生的地方,試著嘗試使用假的資料來測試其發生原因,最後解析出是怎樣的問題來做處理
而常見的問題不外乎三種Tensor shape、Scalar-vector mismatch、Data type mismatch
Tensor shape、Scalar-vector都是屬於維度的問題,有下列四種方式可以來做修復
Data type mismatch的問題就是資料型態不一樣造成無法做運算除了確認資料型態外也可以使用tf.cast()來轉換型態。
那要實際得到錯誤資料有以下三種方法tf.Print()、tfdbg、TensorBoard
tf.Print()能夠在函式之間print出資料
tfdbg可以適用於Terminal window,像一般的除錯資訊一樣進行單步執行來看問題點
TensorBoard則是可以看整個圖形架構,來檢查哪裡有問題。
※圖片參考至 Intro to TensorFlow resource